//package org.heart.controller.excel;
//
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
//@Service
//public class ExcelParserService {
//    public ExcelDataDTO parseExcel(MultipartFile file) throws IOException {
//        Workbook workbook = WorkbookFactory.create(file.getInputStream());
//        Sheet sheet = workbook.getSheetAt(0);
//        ExcelDataDTO dto = new ExcelDataDTO();
//
//        // 1. 解析二维数据
//        List<List<String>> data = new ArrayList<>();
//        for (Row row : sheet) {
//            List<String> rowData = new ArrayList<>();
//            for (Cell cell : row) {
//                rowData.add(getCellValueAsString(cell));
//            }
//            data.add(rowData);
//        }
//        dto.setData(data);
//
//        // 2. 解析合并单元格
//        List<MergeRegion> merges = new ArrayList<>();
//        for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
//            CellRangeAddress region = sheet.getMergedRegion(i);
//            MergeRegion merge = new MergeRegion();
//            merge.setStartRow(region.getFirstRow());
//            merge.setStartCol(region.getFirstColumn());
//            merge.setRowSpan(region.getLastRow() - region.getFirstRow() + 1);
//            merge.setColSpan(region.getLastColumn() - region.getFirstColumn() + 1);
//            merges.add(merge);
//        }
//        dto.setMergeRegions(merges);
//
//        workbook.close();
//        return dto;
//    }
//
//    private String getCellValueAsString(Cell cell) {
//        return switch (cell.getCellType()) {
//            case STRING -> cell.getStringCellValue();
//            case NUMERIC -> String.valueOf(cell.getNumericCellValue());
//            case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
//            default -> "";
//        };
//    }
//}
